<?php

include_once('connexion.php');
	
if(isset($_POST['form_updateProfile_submit']))
{
	$errorMessages = "";
	$login=htmlentities($_POST['form_updateProfile_login']);
	$pass=htmlentities($_POST['form_updateProfile_pass']);
	$pass2=htmlentities($_POST['form_updateProfile_pass2']);
	$gender=htmlentities($_POST['form_updateProfile_gender']);
	$_SESSION['updateGender']=$gender;
	$firstName=htmlentities($_POST['form_updateProfile_firstName']);
	$_SESSION['updateFirstName']=$firstName;
	$lastName=htmlentities($_POST['form_updateProfile_lastName']);
	$_SESSION['updateLastName']=$lastName;
	$mail=htmlentities($_POST['form_updateProfile_mail']);
	$_SESSION['updateEmail']=$mail;
	$tel=htmlentities($_POST['form_updateProfile_tel']);
	$_SESSION['updateTel']=$tel;
	
	//Vérification que les champs sont bien remplis
	if($pass2=="" && $pass!="") $errorMessages.="Veuillez confirmer votre mot de passe.<br />";
	/*if($gender=="") $errorMessages.="Veuillez sélectionner votre civilité.<br />";
	if($firstName=="")
	{
		$errorMessages.="Veuillez saisir votre prénom.<br />";
		$_SESSION['updateFirstName']="";
	}
	if($lastName=="")
	{
		$errorMessages.="Veuillez saisir votre nom.<br />";
		$_SESSION['updateLastName']="";
	} */
	if($mail=="")
	{
		$errorMessages.="Veuillez saisir une adresse email.<br />";
		$_SESSION['updateEmail']="";
	}
	
	//Vérification que le mot de passe est OK
	if($pass!="" && $pass2!="" && $pass!=$pass2) $errorMessages.="Erreur lors de la saisie de votre mot de passe.<br />";
	
	//Vérification que l'email n'est pas déjà utilisé
	if($userManager->exist($mail) && $mail!=$userManager->get((int) $_GET['userid'])->mail())
	{
		$errorMessages.="Le mail saisi est déjà associé à un compte existant.<br />";
		$_SESSION['updateEmail']="";
	}
	
	//Vérification que l'email a un format OK => regex pour mail : au moins 1 caractère + un @ + au moins 1 caractère texte + un "." + entre 2 et 4 caractères texte
	$regex_mail="#^[-.\w]+@[-.\w]{2,}\.[\D]{2,4}$#";
	if($mail!="" && !preg_match($regex_mail, $mail))
	{
		$errorMessages.="L'email saisi n'est pas valide.<br />";
		$_SESSION['updateEmail']="";
	}
	
	//Vérification que le téléphone, s'il est saisi, a un format OK => regex pour n° de téléphone : 10 chiffres + Commence par 06 ou 07 + Que des chiffres
	$regex_tel="#^0[67][-\s\.]?(\d{2}[-\s\.]?){4}$#";
	if($tel!="" && !preg_match($regex_tel, $tel))
	{
		$errorMessages.="Le n° de téléphone saisi n'est pas un n° de mobile valide.<br />";
		$_SESSION['updateTel']="";
	}
	
	//Vérification que l'upload du fichier est OK
	$uploadError = 0;
	if(!empty($_FILES['form_updateProfile_picture']['name']))
	{
		if($_FILES['form_updateProfile_picture']['error'] > 0)
		{
			$errorMessages .= "Erreur lors de l'upload du fichier.<br />";
			$uploadError = 1;
		}
		if($_FILES['form_updateProfile_picture']['size'] > 2097152)
		{
			$errorMessages .= "La taille de la photo ne doit pas excéder 2Mo.<br />";
			$uploadError = 1;
		}
		$valid_extensions = array( 'jpg' , 'jpeg' , 'gif' , 'png' );
		$extension_upload = strtolower(substr(strrchr($_FILES['form_updateProfile_picture']['name'], '.')  ,1)  );
		if(!in_array($extension_upload,$valid_extensions))
		{
			$errorMessages .= "Les formats autorisés sont : jpg, jpeg, gif, png.<br />";
			$uploadError = 1;
		}
		//Upload de la photo
		if($uploadError == 0 && $errorMessages == "")
		{
			//On récupère l'id du user pour constituer le nom du fichier stocké sur le serveur
			$id = $_GET['userid'];
			$name = "pictures/profile_pictures/photo_".$id.".png";
			$result_upload = move_uploaded_file($_FILES['form_updateProfile_picture']['tmp_name'],$name);
			if($result_upload) $uploadError = 0;
			else $errorMessages .= "Erreur lors de l'upload du fichier.<br />";
		}
	}
	
	//Si toutes les conditions ci-dessus sont OK : mise à jour user dans la BDD
	if($errorMessages=="" && $uploadError == 0)
	{
		//On récupère l'id du user à modifier
		$id = $_GET['userid'];
		//On récupère le mot de passe initial s'il n'a pas été modifié. On le crypte sinon.
		if($pass == "") $pass = $_POST['form_updateProfile_passH'];
		else $pass = sha1($pass);
		//Modification du user
		$user = new User(array(
			'id' => $id,
			'login' => $login,
			'password' => $pass,
			'gender' => $gender,
			'firstName' => $firstName,
			'lastName' => $lastName,
			'mail' => $mail,
			'tel' => $tel)
			);
		$userManager->update($user);
		$urlRedirect = $referer.'&action=updateSuccessful';
		$_SESSION['userConnected'] = $user;
		$_SESSION['updateAccountMessage'] = "Votre compte a été modifié avec succès.";
		header('Location: '.$urlRedirect);
	}
	//Si au moins une erreur : on renvoie la variable contenant le(s) message(s) d'erreur
	else
	{
		$_SESSION['updateAccountMessage']=$errorMessages;
		header('Location: '.$referer);
	}
}

?>